package com.mindskip.xzs.domain.enums;
//这段代码定义了一个枚举类型 `ExamPaperAnswerStatusEnum`，用于表示试卷答案状态。
//`ExamPaperAnswerStatusEnum` 枚举类型，可以在代码中明确表示试卷答案状态的两种可能取值，即待批改和完成。
//存储状态信息：每个枚举值包含一个 `code` 和 `name`，代表状态的编码和名称，方便在程序中引用和显示。
//提供方法：
//`getCode()` 和 `getName()` 方法用于获取枚举值的 `code` 和 `name`。
//`fromCode(Integer code)` 方法通过给定的 `code` 返回相应的枚举值。
//*静态 Map 存储映射关系
// 在静态代码块中初始化了一个 `keyMap`，用于将枚举值的 `code` 与枚举值本身进行映射，以便根据 `code` 查找对应的枚举值。
import java.util.HashMap;
import java.util.Map;

// 定义一个枚举类型 ExamPaperAnswerStatusEnum，表示试卷答案状态
public enum ExamPaperAnswerStatusEnum {

    // 枚举值 WaitJudge，代表待批改，对应的 code 为 1，name 为 "待批改"
    WaitJudge(1, "待批改"),

    // 枚举值 Complete，代表完成，对应的 code 为 2，name 为 "完成"
    Complete(2, "完成");

    // 枚举类型的字段，表示枚举值对应的 code 和 name
    int code;
    String name;

    // 枚举类型的构造函数，用于初始化枚举值的 code 和 name
    ExamPaperAnswerStatusEnum(int code, String name) {
        this.code = code;
        this.name = name;
    }

    // 获取枚举值的 code
    public int getCode() {
        return code;
    }

    // 设置枚举值的 code
    public void setCode(int code) {
        this.code = code;
    }

    // 获取枚举值的 name
    public String getName() {
        return name;
    }

    // 设置枚举值的 name
    public void setName(String name) {
        this.name = name;
    }

    // 存储枚举值与其 code 的映射关系的静态 Map
    private static final Map<Integer, ExamPaperAnswerStatusEnum> keyMap = new HashMap<>();

    // 在静态代码块中初始化 keyMap，将每个枚举值的 code 和枚举值本身存入 Map 中
    static {
        for (ExamPaperAnswerStatusEnum item : ExamPaperAnswerStatusEnum.values()) {
            keyMap.put(item.getCode(), item);
        }
    }

    // 根据给定的 code 返回相应的枚举值，如果 code 不存在对应的枚举值，则返回 null
    public static ExamPaperAnswerStatusEnum fromCode(Integer code) {
        return keyMap.get(code);
    }

}
